/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package aqu.persistencia.utilidad;

import aqu.controlador.LoginController;
import aqu.persistencia.Dao.Administracion.SegUsuarioManager;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

/**
 * 
 * @author sero -mc
 */
//clase que agrega mensaje al frond end
public class MessagesController {

    public static void addInfo(String summary, String detail) {
        FacesContext.getCurrentInstance().addMessage(null,
                new FacesMessage(FacesMessage.SEVERITY_INFO, summary, detail));
    }

    public static void addInfo(String summary) {
        FacesContext.getCurrentInstance().addMessage(null,
                new FacesMessage(FacesMessage.SEVERITY_INFO, summary, ""));
    }

    public static void addWarn(String summary, String detail) {
        FacesContext.getCurrentInstance().addMessage(null,
                new FacesMessage(FacesMessage.SEVERITY_WARN, summary, detail));
    }

    public static void addWarn(String summary) {
        FacesContext.getCurrentInstance().addMessage(null,
                new FacesMessage(FacesMessage.SEVERITY_WARN, summary, ""));
    }

    public static void addError(String summary, String detail) {
        FacesContext.getCurrentInstance().addMessage(null,
                new FacesMessage(FacesMessage.SEVERITY_ERROR, summary, detail));
    }

    public static void addError(String summary) {
        FacesContext.getCurrentInstance().addMessage(null,
                new FacesMessage(FacesMessage.SEVERITY_ERROR, summary, ""));
    }

    public static void addFatal(String summary, String detail) {
        FacesContext.getCurrentInstance().addMessage(null,
                new FacesMessage(FacesMessage.SEVERITY_FATAL, summary, detail));
    }

    public static String obtenervariable(String nombrevarible) {
        HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
        LoginController lc = (LoginController) session.getAttribute("loginController");
        return lc.getVariables().get(nombrevarible).toString();
    }

    public static String obtenerkeyautomatico(String nombretabla, String primaria) {
        int maximo = 0;
        int tamano = 0;
        String key = "";
        SegUsuarioManager manager = new SegUsuarioManager();
        maximo = manager.getMaximo(nombretabla, primaria);
        tamano = manager.getTamanoColumna(nombretabla, primaria);
        //Suma uno para la clave siguiente
        maximo++;
       
        key = LlenarConCeros(String.valueOf(maximo), tamano);
        return key;
    }
    
    public static String obtenerkeyautomaticosinceros(String nombretabla, String primaria) {
        int maximo = 0;
        int tamano = 0;
        String key = "";
        SegUsuarioManager manager = new SegUsuarioManager();
        maximo = manager.getMaximo(nombretabla, primaria);
        tamano = manager.getTamanoColumna(nombretabla, primaria);
        //Suma uno para la clave siguiente
        maximo++;
        key = String.valueOf(maximo);
        //key = LlenarConCeros(String.valueOf(maximo), tamano);
        return key;
    }
    
    public static List<String> obtenerlistakeyautomatico(String nombretabla, String primaria,int cantidad) {
        int maximo = 0;
        int tamano = 0;
        List<String> key = new ArrayList();
        SegUsuarioManager manager = new SegUsuarioManager();
        maximo = manager.getMaximo(nombretabla, primaria);
        tamano = manager.getTamanoColumna(nombretabla, primaria);
        for(int i=1;i<=cantidad;i++){
            //Suma uno para la clave siguiente
            maximo++;
            key.add(LlenarConCeros(String.valueOf(maximo), tamano));
        }
        
       
        
        return key;
    }

    public static String LlenarConCeros(String variable, int tamano) {
        String codigo = variable;
        while (codigo.length() < tamano) {
            codigo = "0" + codigo;
        }
        return codigo;
    }
    
    public static boolean validarSerie(String serie) throws Exception{
        String[] series = serie.split("-");
        String serie1, serie2;
        if(series.length > 1){
            serie1 = series[0];
            serie2 = series[1];
            if((serie1.length()==3) && (serie2.length() == 3))
                return true;
            else
                throw new Exception("La serie ingresada no es correcta. \n El Formato es: 001-001");
        }
        return false;        
    }
    
    public static boolean validarSerieAutorizacion(String seriePro, String serieFact) throws Exception{
        if(serieFact.equals(seriePro))
            return true;
        else
            throw new Exception("La serie/Autorización no esta de acuerdo a la informacion del Proveedor");
    }
}
